// // 类似对象 本质都是键值对集合 键只能字符串
// const obj = {}
// obj[true] = 'value'
// obj[123] = 'value'
// obj[{ a: 1 }] = 'value'
// console.log(Object.keys(obj))
// // [ '123', 'true', '[object Object]' ]
// console.log(obj['[object Object]'])
// // 内部还用是toString的结果作为键
// // 于是所有对象都可以获得value, 对象作为键名就没有了区分了
// // ------------------------------------------------
const m = new Map()
const tom = { name: 'tom' }
m.set(tom, 90)
console.log(m)
// Map(1) { { name: 'tom' } => 90 }
console.log(m.get(tom))
// 90 值无法get键但是键可以索引值
// m.has()
// m.delete()
// m.clear()
// 实例对象的forEach方法
// 相同就是value在前 相异就是可以在前
// 默认前一个value 后一个key
m.forEach((value, key) => {
  console.log(key, value)
  // 90 { name: 'tom' }
})
m.forEach((key, value) => {
  console.log(value, key)
  // 90 { name: 'tom' }
})
